package com.wash.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.wash.dao.CartItemMapper;
import com.wash.model.Cart;
import com.wash.model.CartItem;


@Service
@Transactional
public class ShoppingCartService {

	@Autowired
	private CartItemMapper cartItemMapper;
		 
	/**
	 * 根据用户ID获取购物车信息
	 * @param userId
	 * @return
	 */
	public Cart getCartInfo(int userId){
		Cart cart=null;
		List<CartItem> cartItems=cartItemMapper.getUserCartItems(userId);
		if(cartItems!=null){
			cart=new Cart();
			cart.setCartItems(cartItems);
		}
		return cart;
	}
	
	/**
	 * 修改购物车里商品项
	 * @param userId
	 * @param goodsId
	 * @param quantity 
	 * @param flag 
	 */
	public void changeCartItem(int userId,int goodsId,int quantity,int flag){
		List<CartItem> cartItems=cartItemMapper.getUserCartItems(userId);
		if(flag==1){
			boolean existFlag=false;
			if(cartItems!=null){
				for(CartItem cartItem : cartItems){
					if(cartItem.getGoodsId()==goodsId){
						existFlag=true;
						quantity=quantity+cartItem.getQuantity();
						cartItem.setQuantity(quantity);
						cartItemMapper.editEntity(cartItem);
						break;
					}
				}
			}
			if(!existFlag){
				CartItem cartItem=new CartItem();
				cartItem.setUserId(userId);
				cartItem.setGoodsId(goodsId);
				cartItem.setQuantity(quantity);
				cartItemMapper.addEntity(cartItem);
			}
		}
		if(flag==-1){
			for(CartItem cartItem : cartItems){
				if(cartItem.getGoodsId()==goodsId){
					quantity=cartItem.getQuantity()-quantity;
					if(quantity<=0){
						cartItemMapper.deleEntity(cartItem);
					}else{
						cartItemMapper.editEntity(cartItem);
					}
					break;
				}
			}
		}
		
	}
	
	/**
	 * 移除购物车里商品项
	 * @param userId
	 * @param goodsIds
	 */
	public void removeCartItems(int userId,int[] goodsIds){
		for(int goodsId : goodsIds){
			CartItem cartItem=new CartItem();
			cartItem.setGoodsId(goodsId);
			cartItem.setUserId(userId);
			cartItemMapper.deleEntity(cartItem);
		}
	}
	
	/**
	 * 清空购物车
	 * @param userId
	 */
	public void cleanCart(int userId){
		cartItemMapper.deleAll(userId);
	}
}
